home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / plain C OS8 / Gadgets / GadgetsDoc.c < prev    next >
Encoding:
Text File  |  1998-10-29  |  2.3 KB  |  140 lines  |  [TEXT/CWIE]

  1. // GadgetsDoc.c -- document-level functions
  2.  
  3. #include <Types.h>
  4. #include <Events.h>
  5. #include <Menus.h>
  6. #include <stdlib.h>
  7.  
  8. #include "Globals.h"
  9. #include "ResourceDefs.h"
  10. #include "Dispatcher.h"
  11. #include "Miscellany.h"
  12. #include "GadgetsEngine.h"
  13.  
  14. #include "AboutDialog.h"
  15. #include "DDocData.h"
  16. #include "Buttons.h"
  17. #include "DDocData.h"
  18. #include "TabbedPanel.h"
  19. #include "DDocData.h"
  20. #include "EditText.h"
  21. #include "GadgetsDoc.h"
  22.  
  23. static    GadgetsEngine*    GetEngine    (AMDoc*        self);
  24.  
  25. static    void    DoInvokeAbout    (AMDoc*        self);
  26.  
  27. //----------
  28. GadgetsDoc*        NewGadgetsDoc ()
  29. {
  30.     GadgetsDoc*        doc;
  31.  
  32.     doc = (GadgetsDoc*)malloc (sizeof (GadgetsDoc));
  33.     GadgetsDoc_Init (doc);
  34.     SetClassID (doc, classGadgetsDoc);
  35.  
  36.     return doc;
  37. }
  38.  
  39. //----------
  40. void    DeleteDoc (
  41.     AMDoc*        doc)
  42. {
  43.     GadgetsDoc_Free ((GadgetsDoc*)doc);
  44.     free (doc);
  45. }
  46.  
  47. //----------
  48. void    GadgetsDoc_Init (
  49.     GadgetsDoc*        self)
  50. {
  51.     ((AMDoc*)self)->mEngine = (AMEngine*) NewGadgetsEngine ();
  52.  
  53.     self->mButtonsPtr = nil;
  54.     self->mTabbedPanelPtr = nil;
  55.     self->mEditTextPtr = nil;
  56. }
  57.  
  58. //----------
  59. void    GadgetsDoc_Free (
  60.     GadgetsDoc*        self)
  61. {
  62. }
  63.  
  64. //----------
  65. GadgetsEngine*        GetEngine (
  66.     AMDoc*        self)
  67. {
  68.     return (GadgetsEngine*) (self->mEngine);
  69. }
  70.  
  71. //----------
  72. void    OpenWindows (
  73.     AMDoc*        self)
  74. {
  75.     GadgetsEngine*        engine = GetEngine (self);
  76.  
  77.     // replace this code to get data from someplace useful
  78.  
  79.     Buttons_Create (self, GetDocData (engine));
  80.     TabbedPanel_Create (self, GetDocData (engine));
  81.     EditText_Create (self, GetDocData (engine));
  82. }
  83.  
  84. //----------
  85. Boolean        WouldCloseDoc (
  86.     AMDoc*        doc,
  87.     WindowPtr    inWindPtr)
  88. {
  89.     GadgetsDoc*        self = (GadgetsDoc*) doc;
  90.     short        numOpen = 0;
  91.  
  92.     if (self->mButtonsPtr != nil)        numOpen++;
  93.     if (self->mTabbedPanelPtr != nil)        numOpen++;
  94.     if (self->mEditTextPtr != nil)        numOpen++;
  95.  
  96.     return (numOpen <= 1);
  97. }
  98.  
  99. //----------
  100. void    DoInvokeAbout (
  101. AMDoc*        self)
  102. {
  103.     if (GetAboutDialog ()) {
  104.         /* do something */
  105.     }
  106. }
  107.  
  108. //----------
  109. Boolean        DoDocCommand (
  110.     AMDoc*        self,
  111.     long        inCommand)
  112. {
  113.     Boolean        result = true;
  114.  
  115.     switch (inCommand) {
  116.         case cmdSave:
  117.                 DoSave (self);
  118.             break;
  119.         case cmdSaveAs:
  120.                 DoSaveAs (self);
  121.             break;
  122.         case cmdRevert:
  123.                 DoRevert (self);
  124.             break;
  125.         case cmdPageSetup:
  126.                 DoPageSetup (self);
  127.             break;
  128.         case cmdPrint:
  129.                 DoPrint (self);
  130.             break;
  131.         case cmdInvokeAbout:
  132.                 DoInvokeAbout (self);
  133.             break;
  134.  
  135.         default:
  136.                 result = false;
  137.     } // switch
  138.     return result;
  139. }
  140.